package name.cyrax.red.jpv.api.funcs;

import name.cyrax.red.jpv.api.vectors.Vector;
import name.cyrax.red.jpv.api.vectors.VectorFactory;

public interface Invocable<N extends Number> extends InvocableAdapter 
{
	public Vector<N> invoke();

	public CompiledInvocable<N> compile();
	public CompiledInvocable<N> compileAsSubstatement(InvocationContext context);
	public VectorFactory<N> factory();
	
	public Invocable<?> getInvocableParam(int index);
}